www.gusucode.com > VC++ 宾馆管理系统(MSSQL) > VC++ 宾馆管理系统(MSSQL)/gusucode/Code/Hotel_MISView.cpp
//Download by http://www.NewXing.com // Hotel_MISView.cpp : implementation of the CHotel_MISView class // #include "stdafx.h" #include "Hotel_MIS.h" #include "Hotel_MISDoc.h" #include "Hotel_MISView.h" #include "RoomTypeDLG.h" #include "RoomDLG.h" #include "CheckRoomDLG.h" #include "CheckRemainDLG.h" #include "BookInDLG.h" #include "SearchBookInDLG.h" #include "CheckOutDLG.h" #include "SearchCheckOutDLG.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CHotel_MISView IMPLEMENT_DYNCREATE(CHotel_MISView, CView) BEGIN_MESSAGE_MAP(CHotel_MISView, CView) //{{AFX_MSG_MAP(CHotel_MISView) ON_WM_SIZE() ON_WM_CONTEXTMENU() ON_COMMAND(ID_MENU_ADDROOMTYPE, OnAddRoomType) ON_COMMAND(ID_MENU_ALTERROOMTYPE, OnAlterRoomType) ON_COMMAND(ID_MENU_DELROOMTYPE, OnDelRoomType) ON_COMMAND(ID_MENU_ADDROOM, OnAddRoom) ON_COMMAND(ID_MENU_ALTERROOM, OnAlterRoom) ON_COMMAND(ID_MENU_DELROOM, OnDelRoom) ON_COMMAND(ID_MENU_CHECKROOM, OnCheckRoom) ON_COMMAND(ID_MENU_CHECKREMAIN, OnCheckRemain) ON_COMMAND(ID_MENU_ADDBOOKIN, OnAddBookIn) ON_COMMAND(ID_MENU_ALTERBOOKIN, OnAlterBookIn) ON_COMMAND(ID_MENU_SEARCHBOOKIN, OnSearchBookIn) ON_COMMAND(ID_MENU_ADDCHECKOUT, OnAddCheckOut) ON_COMMAND(ID_MENU_ALTERCHECKOUT, OnAlterCheckOut) ON_COMMAND(ID_MENU_SEARCHCHECKOUT, OnSearchCheckOut) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CHotel_MISView construction/destruction CHotel_MISView::CHotel_MISView() { // TODO: add construction code here m_sCurrentList = ""; } CHotel_MISView::~CHotel_MISView() { } BOOL CHotel_MISView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CHotel_MISView drawing void CHotel_MISView::OnDraw(CDC* pDC) { CHotel_MISDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here } ///////////////////////////////////////////////////////////////////////////// // CHotel_MISView diagnostics #ifdef _DEBUG void CHotel_MISView::AssertValid() const { CView::AssertValid(); } void CHotel_MISView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CHotel_MISDoc* CHotel_MISView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHotel_MISDoc))); return (CHotel_MISDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CHotel_MISView message handlers void CHotel_MISView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); // TODO: Add your message handler code here if (m_ListCtrl) { CRect rect; GetClientRect(rect); rect.top += 30; m_ListCtrl.MoveWindow(rect); } } void CHotel_MISView::LoadListCtrl() { CRect rect; GetClientRect(rect); rect.top += 30; m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, rect, this, 1); m_ListCtrl.SetBkColor(RGB(177, 151, 240)); m_ListCtrl.SetTextColor(RGB(0,0,0)); m_ListCtrl.SetTextBkColor(RGB(177, 151, 240)); m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP); m_ListCtrl.InsertColumn(0,"Node ID", LVCFMT_LEFT, 250); m_ListCtrl.InsertColumn(1,"2 ID", LVCFMT_LEFT, 250); CString str; for (int i=0; i<100; i++) { str.Format("%d", i); m_ListCtrl.InsertItem(i, str); } } void CHotel_MISView::UnLoadListCtrl() { m_ListCtrl.DestroyWindow(); } void CHotel_MISView::OnContextMenu(CWnd* pWnd, CPoint point) { // TODO: Add your message handler code here if ( ""==m_sCurrentList ) return; CMenu menu; if ( _T("房间标准列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_ROOMTYPE); else if ( _T("客房信息列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_ROOM); else if ( _T("定房信息列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_BOOKIN); else if ( _T("结算信息列表")==m_sCurrentList ) menu.LoadMenu(IDR_MENU_CHECKOUT); CMenu* pMenu=menu.GetSubMenu(0); pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,point.x,point.y,this); return; } void CHotel_MISView::OnAddRoomType() { // TODO: Add your command handler code here CRoomTypeDLG dlg; dlg.m_bAppend = true; dlg.DoModal(); } void CHotel_MISView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class // Create a Static ctrl for tip CRect rect; rect.left = rect.top =5; rect.bottom = 30; rect.right = 120; m_StaticCtrl.Create(m_sCurrentList, WS_VISIBLE, rect, this, 1); } void CHotel_MISView::RefreshRoomType() { if (m_ListCtrl) m_ListCtrl.DestroyWindow(); CreateRoomType(); m_sCurrentList = _T("房间标准列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); } void CHotel_MISView::CreateRoomType() { //Update m_sCurrentList and Static Ctrl m_sCurrentList = _T("房间标准列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); // Get Client Rect CRect rect; GetClientRect(rect); rect.top += 30; // Create m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, rect, this, 1); // Set Color m_ListCtrl.SetBkColor(RGB(177, 151, 240)); m_ListCtrl.SetTextColor(RGB(0,0,0)); m_ListCtrl.SetTextBkColor(RGB(177, 151, 240)); // Set EX-Style m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP); // Create Header m_ListCtrl.InsertColumn(0,_T("标准编号"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(1,_T("标准名称"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(2,_T("房间面积"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(3,_T("床位数量"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(4,_T("住房单价/每天"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(5,_T("是否有空调"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(6,_T("是否有电话"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(7,_T("是否有电视"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(8,_T("是否有卫生间"), LVCFMT_LEFT, 100); // Get all records _variant_t Holder, strQuery; strQuery = "select * from roomtype order by typeid"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) return; CString str; theApp.m_pADOSet->MoveFirst(); for(int i=0; i<iCount; i++) { // Get typeid Holder = theApp.m_pADOSet->GetCollect("typeid"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.InsertItem(i, str); // Get typename Holder = theApp.m_pADOSet->GetCollect("typename"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 1, str); // Get area Holder = theApp.m_pADOSet->GetCollect("area"); str.Format("%.2f", Holder.dblVal); m_ListCtrl.SetItemText(i, 2, str); // Get bednum Holder = theApp.m_pADOSet->GetCollect("bednum"); str.Format("%d", Holder.vt==VT_NULL?0:Holder.intVal); m_ListCtrl.SetItemText(i, 3, str); // Get price Holder = theApp.m_pADOSet->GetCollect("price"); str.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal); m_ListCtrl.SetItemText(i, 4, str); // Get airCondition Holder = theApp.m_pADOSet->GetCollect("haircondition"); if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("没有"); m_ListCtrl.SetItemText(i, 5, str); // Get Phone Holder = theApp.m_pADOSet->GetCollect("htelephone"); if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("没有"); m_ListCtrl.SetItemText(i, 6, str); // Get TV Holder = theApp.m_pADOSet->GetCollect("htelevision"); if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("没有"); m_ListCtrl.SetItemText(i, 7, str); // Get TV Holder = theApp.m_pADOSet->GetCollect("htoilet"); if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("没有"); m_ListCtrl.SetItemText(i, 8, str); theApp.m_pADOSet->MoveNext(); } } void CHotel_MISView::OnAlterRoomType() { // TODO: Add your command handler code here if ( m_ListCtrl && m_sCurrentList!="房间标准列表" ) { m_ListCtrl.DestroyWindow(); CreateRoomType(); return; } if ( !m_ListCtrl ) { CreateRoomType(); return; } //Popup Alter Dialog POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) AfxMessageBox(_T("没有选中的记录!"), MB_ICONEXCLAMATION); else { CRoomTypeDLG dlg; dlg.m_bAppend = false; CString str; int iItem = m_ListCtrl.GetNextSelectedItem(pos); // Get typeid dlg.m_sTypeID = m_ListCtrl.GetItemText(iItem, 0); // Get typename dlg.m_sTypeName = m_ListCtrl.GetItemText(iItem, 1); // Get area dlg.m_sArea = m_ListCtrl.GetItemText(iItem, 2); // Get bednum dlg.m_sBedNo = m_ListCtrl.GetItemText(iItem, 3); // Get price dlg.m_sPrice = m_ListCtrl.GetItemText(iItem, 4); // Get airCondition str = m_ListCtrl.GetItemText(iItem, 5); if ( _T("有")==str ) dlg.m_bAirCon = true; else dlg.m_bAirCon = false; // Get Phone str = m_ListCtrl.GetItemText(iItem, 6); if ( _T("有")==str ) dlg.m_bTel = true; else dlg.m_bTel = false; // Get TV str = m_ListCtrl.GetItemText(iItem, 7); if ( _T("有")==str ) dlg.m_bTV = true; else dlg.m_bTV = false; // Get TV str = m_ListCtrl.GetItemText(iItem, 8); if ( _T("有")==str ) dlg.m_bToilet = true; else dlg.m_bToilet = false; dlg.DoModal(); } } void CHotel_MISView::OnDelRoomType() { // TODO: Add your command handler code here if ( m_ListCtrl && m_sCurrentList!="房间标准列表" ) { m_ListCtrl.DestroyWindow(); CreateRoomType(); return; } if ( !m_ListCtrl ) { CreateRoomType(); return; } // Del Records POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if ( pos == NULL ) { AfxMessageBox(_T("没有选中的记录!"), MB_ICONEXCLAMATION); return; } else { int iItem; CString sID; _variant_t Holder, strQuery; while (pos) { iItem = m_ListCtrl.GetNextSelectedItem(pos); sID = m_ListCtrl.GetItemText(iItem, 0); strQuery = "delete from roomtype where typeid='"+sID+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); } } // Refresh List RefreshRoomType(); } void CHotel_MISView::OnAddRoom() { // TODO: Add your command handler code here // Check RooType _variant_t strQuery, Holder; strQuery = "select typename from roomtype"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { AfxMessageBox(_T("请先进行客房标准设置!"), MB_ICONEXCLAMATION); return; } CRoomDLG dlg; dlg.m_bAppend = true; dlg.DoModal(); } void CHotel_MISView::RefreshRoom(_variant_t strQuery) { if (m_ListCtrl) m_ListCtrl.DestroyWindow(); CreateRoom( strQuery ); m_sCurrentList = _T("客房信息列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); } void CHotel_MISView::CreateRoom(_variant_t strQuery) { //Update m_sCurrentList and Static Ctrl m_sCurrentList = _T("客房信息列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); // Get Client Rect CRect rect; GetClientRect(rect); rect.top += 30; // Create m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, rect, this, 1); // Set Color m_ListCtrl.SetBkColor(RGB(177, 151, 240)); m_ListCtrl.SetTextColor(RGB(0,0,0)); m_ListCtrl.SetTextBkColor(RGB(177, 151, 240)); // Set EX-Style m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP); // Create Header m_ListCtrl.InsertColumn(0,_T("客房编号"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(1,_T("客房类型"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(2,_T("客房位置"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(3,_T("客房单价"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(4,_T("是否被定"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(5,_T("备注"), LVCFMT_LEFT, 200); // Get all records _variant_t Holder; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) return; CString str; theApp.m_pADOSet->MoveFirst(); for(int i=0; i<iCount; i++) { // Get roomNo Holder = theApp.m_pADOSet->GetCollect("roomNo"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.InsertItem(i, str); // Get room type Holder = theApp.m_pADOSet->GetCollect("roomtype"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 1, str); // Get position Holder = theApp.m_pADOSet->GetCollect("roomposition"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; //str.Format("%.2f", Holder.dblVal); m_ListCtrl.SetItemText(i, 2, str); // Get price Holder = theApp.m_pADOSet->GetCollect("roomprice"); str.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal); m_ListCtrl.SetItemText(i, 3, str); // Get Putup Holder = theApp.m_pADOSet->GetCollect("putup"); if (Holder.vt==VT_NULL?0:Holder.iVal) str = _T("有"); else str = _T("没有"); m_ListCtrl.SetItemText(i, 4, str); // Get Memo Holder = theApp.m_pADOSet->GetCollect("roommemo"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 5, str); theApp.m_pADOSet->MoveNext(); } } void CHotel_MISView::OnAlterRoom() { // TODO: Add your command handler code here _variant_t strQuery; if ( m_ListCtrl && m_sCurrentList!=_T("客房信息列表") ) { m_ListCtrl.DestroyWindow(); strQuery = "select * from rooms"; CreateRoom(strQuery); return; } if ( !m_ListCtrl ) { strQuery = "select * from rooms"; CreateRoom(strQuery); return; } //Popup Alter Dialog POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) AfxMessageBox(_T("没有选中的记录!"), MB_ICONEXCLAMATION); else { CRoomDLG dlg; dlg.m_bAppend = false; int iItem = m_ListCtrl.GetNextSelectedItem(pos); // Get Room No dlg.m_sNo = m_ListCtrl.GetItemText(iItem, 0); // Get Room Type dlg.m_sType = m_ListCtrl.GetItemText(iItem, 1); // Get Position dlg.m_sPosition = m_ListCtrl.GetItemText(iItem, 2); // Get Price dlg.m_sPrice = m_ListCtrl.GetItemText(iItem, 3); // Get Memo dlg.m_sMemo = m_ListCtrl.GetItemText(iItem, 5); dlg.DoModal(); } } void CHotel_MISView::OnDelRoom() { // TODO: Add your command handler code here _variant_t Holder, strQuery; if ( m_ListCtrl && m_sCurrentList!="客房信息列表" ) { m_ListCtrl.DestroyWindow(); strQuery = "select * from rooms"; CreateRoom( strQuery ); return; } if ( !m_ListCtrl ) { strQuery = "select * from rooms"; CreateRoom(strQuery); return; } // Del Records POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if ( pos == NULL ) { AfxMessageBox(_T("没有选中的记录!"), MB_ICONEXCLAMATION); return; } else { int iItem; CString sID; while (pos) { iItem = m_ListCtrl.GetNextSelectedItem(pos); sID = m_ListCtrl.GetItemText(iItem, 0); strQuery = "delete from rooms where roomNo='"+sID+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); } } // Refresh List strQuery = "select * from rooms"; RefreshRoom( strQuery ); } void CHotel_MISView::OnCheckRoom() { // TODO: Add your command handler code here // Check RooType _variant_t strQuery, Holder; strQuery = "select typename from roomtype"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { AfxMessageBox(_T("请先进行客房标准设置!"), MB_ICONEXCLAMATION); return; } CCheckRoomDLG dlg; dlg.DoModal(); } void CHotel_MISView::OnCheckRemain() { // TODO: Add your command handler code here // Check RoomType _variant_t strQuery, Holder; strQuery = "select typename from roomtype"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { AfxMessageBox(_T("请先进行客房标准设置!"), MB_ICONEXCLAMATION); return; } CCheckRemainDLG dlg; dlg.DoModal(); } void CHotel_MISView::OnAddBookIn() { // TODO: Add your command handler code here // Check Rooms _variant_t strQuery, Holder; strQuery = "select * from rooms"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { AfxMessageBox(_T("请先进行客房信息设置!"), MB_ICONEXCLAMATION); return; } strQuery = "select * from rooms where putup=0 or putup is NULL"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { AfxMessageBox(_T("客房已经全部定满!"), MB_ICONEXCLAMATION); return; } CBookInDLG dlg; dlg.m_bAppend = true; dlg.DoModal(); } void CHotel_MISView::RefreshBookIn(_variant_t strQuery) { if (m_ListCtrl) m_ListCtrl.DestroyWindow(); CreateBookIn( strQuery ); m_sCurrentList = _T("定房信息列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); } void CHotel_MISView::CreateBookIn(_variant_t strQuery) { //Update m_sCurrentList and Static Ctrl // Get Client Rect CRect rect; GetClientRect(rect); rect.top += 30; // Create m_ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT, rect, this, 1); // Set Color m_ListCtrl.SetBkColor(RGB(177, 151, 240)); m_ListCtrl.SetTextColor(RGB(0,0,0)); m_ListCtrl.SetTextBkColor(RGB(177, 151, 240)); // Set EX-Style m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP); // Create Header m_ListCtrl.InsertColumn(0,_T("定房编号"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(1,_T("顾客姓名"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(2,_T("身份证号码"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(3,_T("客房编号"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(4,_T("入住日期"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(5,_T("折扣%"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(6,_T("结帐时间"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(7,_T("租金"), LVCFMT_LEFT, 100); m_ListCtrl.InsertColumn(8,_T("备注"), LVCFMT_LEFT, 100); // Get all records _variant_t Holder; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) return; CString str; COleDateTime time; theApp.m_pADOSet->MoveFirst(); for(int i=0; i<iCount; i++) { // Get bookno Holder = theApp.m_pADOSet->GetCollect("bookno"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.InsertItem(i, str); // Get customname Holder = theApp.m_pADOSet->GetCollect("customname"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 1, str); // Get customID Holder = theApp.m_pADOSet->GetCollect("customID"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; //str.Format("%.2f", Holder.dblVal); m_ListCtrl.SetItemText(i, 2, str); // Get roomno Holder = theApp.m_pADOSet->GetCollect("roomno"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 3, str); // Get indate Holder = theApp.m_pADOSet->GetCollect("indate"); time = Holder; str = time.Format("%Y-%m-%d"); m_ListCtrl.SetItemText(i, 4, str); // Get discount Holder = theApp.m_pADOSet->GetCollect("discount"); str.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal); m_ListCtrl.SetItemText(i, 5, str); // Get checkdate Holder = theApp.m_pADOSet->GetCollect("checkdate"); if ( VT_NULL==Holder.vt ) str="N/A"; else { time = Holder; str = time.Format("%Y-%m-%d"); } m_ListCtrl.SetItemText(i, 6, str); // Get ammount Holder = theApp.m_pADOSet->GetCollect("ammount"); if ( VT_NULL==Holder.vt ) str="N/A"; else str.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal); m_ListCtrl.SetItemText(i, 7, str); // Get inmemo Holder = theApp.m_pADOSet->GetCollect("inmemo"); str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; m_ListCtrl.SetItemText(i, 8, str); theApp.m_pADOSet->MoveNext(); } } void CHotel_MISView::OnAlterBookIn() { // TODO: Add your command handler code here _variant_t strQuery; if ( m_ListCtrl && m_sCurrentList!=_T("定房信息列表") ) { m_ListCtrl.DestroyWindow(); strQuery = "select * from bookin where checkdate is NULL"; CreateBookIn(strQuery); m_sCurrentList = _T("定房信息列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); return; } if ( !m_ListCtrl ) { strQuery = "select * from bookin where checkdate is NULL"; CreateBookIn(strQuery); m_sCurrentList = _T("定房信息列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); return; } //Popup Alter Dialog POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) AfxMessageBox(_T("没有选中的记录!"), MB_ICONEXCLAMATION); else { CBookInDLG dlg; dlg.m_bAppend = false; CString str; int iItem = m_ListCtrl.GetNextSelectedItem(pos); // Get Room No dlg.m_sRoomNo = m_ListCtrl.GetItemText(iItem, 3); // Get Name dlg.m_sName = m_ListCtrl.GetItemText(iItem, 1); // Get ID dlg.m_sID = m_ListCtrl.GetItemText(iItem, 2); // Get InDate _variant_t strQuery, Holder; strQuery = "select indate from bookin where roomno='"+dlg.m_sRoomNo+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); Holder = theApp.m_pADOSet->GetCollect("indate"); dlg.m_tInDAte = Holder; // Get discount dlg.m_sDiscount = m_ListCtrl.GetItemText(iItem, 5); // Get Memo dlg.m_sMemo = m_ListCtrl.GetItemText(iItem, 8); dlg.DoModal(); } } void CHotel_MISView::OnSearchBookIn() { // TODO: Add your command handler code here CSearchBookInDLG dlg; dlg.DoModal(); } void CHotel_MISView::OnAddCheckOut() { // TODO: Add your command handler code here // Check if any record exist _variant_t strQuery, Holder; strQuery = "select * from bookin"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { AfxMessageBox(_T("没有顾客入住!"), MB_ICONEXCLAMATION); return; } // Check if any not checked record exist strQuery = "select * from bookin where checkdate is NULL"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); iCount = theApp.m_pADOSet->GetRecordCount(); if ( 0==iCount ) { AfxMessageBox(_T("全部客房均以结算!"), MB_ICONEXCLAMATION); strQuery = "select * from bookin where checkdate is not NULL"; RefreshCheckOut(strQuery); return; } CCheckOutDLG dlg; dlg.m_bAppend = true; dlg.DoModal(); } void CHotel_MISView::RefreshCheckOut(_variant_t strQuery) { if (m_ListCtrl) m_ListCtrl.DestroyWindow(); CreateBookIn( strQuery ); m_sCurrentList = _T("结算信息列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); } void CHotel_MISView::OnAlterCheckOut() { // TODO: Add your command handler code here _variant_t strQuery; if ( m_ListCtrl && m_sCurrentList!=_T("结算信息列表") ) { m_ListCtrl.DestroyWindow(); strQuery = "select * from bookin where checkdate is not NULL"; CreateBookIn(strQuery); m_sCurrentList = _T("结算信息列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); return; } if ( !m_ListCtrl ) { strQuery = "select * from bookin where checkdate is not NULL"; CreateBookIn(strQuery); m_sCurrentList = _T("结算信息列表"); m_StaticCtrl.SetWindowText(m_sCurrentList); return; } POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); if (pos == NULL) AfxMessageBox(_T("没有选中的记录!"), MB_ICONEXCLAMATION); else { CCheckOutDLG dlg; dlg.m_bAppend = false; CString str; int iItem = m_ListCtrl.GetNextSelectedItem(pos); // Get Room No dlg.m_sRoomNo = m_ListCtrl.GetItemText(iItem, 3); // Get Name dlg.m_sName = m_ListCtrl.GetItemText(iItem, 1); // Get ID dlg.m_sID = m_ListCtrl.GetItemText(iItem, 2); // Get InDate dlg.m_sInDate = m_ListCtrl.GetItemText(iItem, 4); // Get discount dlg.m_sDiscount = m_ListCtrl.GetItemText(iItem, 5); // Get Memo dlg.m_sMemo = m_ListCtrl.GetItemText(iItem, 8); // Get CheckOut Date _variant_t strQuery, Holder; strQuery = "select checkdate from bookin where roomno='"+dlg.m_sRoomNo+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); Holder = theApp.m_pADOSet->GetCollect("checkdate"); dlg.m_tOutDate = Holder; dlg.DoModal(); } } void CHotel_MISView::OnSearchCheckOut() { // TODO: Add your command handler code here CSearchCheckOutDLG dlg; dlg.DoModal(); }